package com.gxar.uaa.server.db.model;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * 菜单实体
 *
 * @author linsy
 * @version 1.0
 * @created 2024/1/4 13:58
 */
@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "sys_menu")
public class SysMenuEntity implements Serializable {

    private static final long serialVersionUID = -2553568145905357197L;

    /**
     * 菜单id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    /**
     * 父级菜单
     */
    @Column(nullable = false)
    private Long parentId;
    /**
     * 菜单code
     */
    @Column(nullable = false)
    private String name;
    /**
     * 菜单标题
     */
    @Column(nullable = false)
    private String title;
    /**
     * 国际化标题
     */
    private String i18nTitle;
    /**
     * 类型（0-目录，1-菜单，2-按钮）
     */
    @Column(nullable = false)
    private Integer type;
    /**
     * 租户字段
     */
    @Column(nullable = false)
    private String app;
    /**
     * url
     */
    private String url;
    /**
     * url请求方式
     */
    private String urlMethod;
    /**
     * 菜单path地址
     */
    private String path;
    /**
     * 外链地址
     */
    private String href;
    /**
     * 菜单icon
     */
    private String icon;
    /**
     * 排序 越小越靠前
     */
    private Integer sort;
    /**
     * 路由的动态路径
     */
    private String dynamicPath;
    /**
     * 作为单级路由的父级路由布局组件
     */
    private String singleLayout;
    /**
     * 需要登录权限
     */
    private Boolean requiresAuth;
    /**
     * 缓存页面
     */
    private Boolean keepAlive;
    /**
     * 本地icon
     */
    private String localIcon;
    /**
     * 是否隐藏
     */
    private Boolean hide;
    /**
     * 是否支持多个tab页签
     */
    private Boolean multiTab;
    /**
     * 当前路由需要选中的菜单项
     */
    private String activeMenu;
    /**
     * 表示是否是多级路由的中间级路由
     */
    private Boolean multi;
    /**
     * 是否固定在tab卡不可关闭
     */
    private Boolean affix;
    /**
     * 是否显示侧边栏
     */
    private Boolean hideSidebar;
    /**
     * 是否显示Tab标签
     */
    private Boolean hideTabs;
    /**
     * 是否显示底部标签
     */
    private Boolean hideFooter;
    /**
     * 路由重定向
     */
    private String redirect;
    /**
     * 组件
     */
    private String component;
    /**
     * 创建时间
     */
    @Column(nullable = false)
    private Date createdAt;
    /**
     * 创建者
     */
    @Column(nullable = false)
    private String creator;
    /**
     * 更新时间
     */
    @Column(nullable = false)
    private Date updatedAt;
    /**
     * 更新者
     */
    private String operator;
    /**
     * 是否删除
     */
    private Boolean deleted;

}
